package com.adminsystem.java.user.service;

import com.adminsystem.java.common.PageResult;
import com.adminsystem.java.user.pojo.param.*;
import com.adminsystem.java.common.Result;
import com.adminsystem.java.user.pojo.vo.LoginUserVO;
import com.adminsystem.java.user.pojo.vo.UserVO;

/**
 * @author wangpeiao
 */
public interface UserService {
    /**
     * 用户注册
     * @param param 注册参数
     * @return 注册结果
     */
    Result register(UserRegisterParam param);

    /**
     * 用户登录
     * @param param 登录参数
     * @return 登录结果
     */
    Result<LoginUserVO> login(UserLoginParam param);

    /**
     * 忘记密码：根据用户名或邮箱发送验证码
     */
    Result forgotPassword(ForgotPasswordParam param);

    /**
     * 重置密码：根据验证码设置新密码
     */
    Result resetPassword(ResetPasswordParam param);

    /**
     * 分页查询用户列表
     */
    PageResult<UserVO> getUserListByPage(UserPageParam param);

    /**
     * 获取用户详情
     */
    Result<UserVO> getUserDetail(String username);

    /**
     * 修改用户信息
     */
    Result<Void> editUser(UserEditParam param);

    /**
     * 删除用户
     */
    Result<Void> deleteUser(String username);

    /**
     * 新增用户
     */
    Result<Void> addUser(UserAddParam param);

    /**
     * 修改用户状态（启用/禁用）
     * @param username 用户名
     * @param status 用户状态（0:禁用, 1:启用）
     * @return 操作结果
     */
    Result<Void> changeUserStatus(String username, Integer status);


    /**
     * 批量删除用户（通过ID列表）
     *
     * @param param 参数
     * @return 操作结果
     */
    Result<Void> deleteUsersByIds(UserDeleteByIdsParam param);

}